% THIS IS AN EXAMPLE DOCUMENT FOR VLDB 2007 
% based on ACM SIGPROC-SP.TEX VERSION 2.7
% Modified by  Gerald Weber <gerald@cs.auckland.ac.nz>


% This example *does* use the .bib file (from which the .bbl file
% is produced). REMEMBER HOWEVER: After having produced the .bbl file,
% and prior to final submission, you need to 'insert'  your .bbl file into 
% your source .tex file so as to provide ONE 'self-contained' source file.

\documentclass{vldb}            
\usepackage{graphicx}
\usepackage{listings}
\usepackage[utf8]{inputenc}

\begin{document}

\title{Um Sistema Peer-to-Peer para Armazenamento Distribuído de Arquivos}

\numberofauthors{3} %  in this sample file, there are a *total*
% of EIGHT authors. SIX appear on the 'first-page' (for formatting
% reasons) and the remaining two appear in the \additionalauthors section.

\author{
\alignauthor
Daniel Mauricio Sthor\\
       \affaddr{Departamento de Informática da UFPR}\\
       \affaddr{Caixa Postal 19.081}\\
       \affaddr{Curitiba, PR 81.531-980}\\
       \email{dms07@inf.ufpr.br}
% 2nd. author
\alignauthor	
Lauro Luis Costa\\
       \affaddr{Departamento de Informática da UFPR}\\
       \affaddr{Caixa Postal 19.081}\\
       \affaddr{Curitiba, PR 81.531-980}\\
       \email{llc07@inf.ufpr.br}
% 3rd. author
\alignauthor 
Lucas Nascimento Ferreira\\
       \affaddr{Departamento de Informática da UFPR}\\
       \affaddr{Caixa Postal 19.081}\\
       \affaddr{Curitiba, PR 81.531-980}\\
       \email{lnf07@inf.ufpr.br}
}

\maketitle

\begin{abstract}

Este trabalho apresenta uma implementação de um sistema distribuído de armazenamento 
de arquivos utilizando uma arquitetura peer-to-peer (P2P), onde os arquivos são quebrados 
em blocos menores, e esses blocos estão armazenados em uma Tabela Hash Distribuída (DHT). 
O sistema possui um catálogo de referência de todos os arquivos armazenados na DHT. O 
catalogo permite a busca por arquivos armanzenados, a qual pode ser realizada sobre 
qualquer elemento de descrição do arquivo.

\end{abstract}


\section{Introdução}

Existem diversas aplicações para compartilhamento de arquivos em redes peer-to-peer (P2P).
Os sistemas P2P possuem diversas vantagens para armazenamento de
arquivos, tais como: escalabilidade, balanceamento de carga e tolerância à falhas. 
Na técnica de armazenamento utilizada nas aplicações mais populares de compartilhamento 
de arquivo, cada usuário mantém seus próprios dados e torna eles acessíveis para os outros 
usuários da rede. Uma outra técnica para realizar armazenamento de dados distribuídos é a 
Tabela Hash Distribuída (DHT). A DHT é uma estrutura distribuída que provê um serviço de busca 
similar ao de uma Tabela Hash (chave, valor) \cite{artigo2}. Portanto, nesse sistema o 
usuário não tem controle sobre o local onde seus dados ficam armazenados. Os pares (chave, valor)  
são armazenados em uma DHT, e qualquer nó participante pode recuperar de forma eficiente o 
valor associado a uma determinada chave. A responsabilidade pela manutenção do mapeamento das 
chaves para valores é distribuído entre os nós da rede, de tal forma que uma mudança no conjunto 
dos participantes causa uma quantidade mínima de ruptura. Isto permite uma DHT 
escalar um número extremamente grande de nós e lidar com as chegadas contínuas de 
novos nós, partidas de nós e falhas na rede \cite{artigo1}.

A aplicação proposta implementa uma solução para o problema de compartilhamento e troca
de arquivos em uma rede de forma distribuída com a seguinte especificação: O sistema deve 
quebrar os arquivos em pedaços de 256 KB e os pedaços devem ser armazenados em diferentes 
nós da rede. Um catálogo armazena metadados dos arquivos, relacionando o identificador único 
do arquivo na rede e alguns campos do padrão \emph{Dublin Core}. O catálogo deve permitir a 
recuperação de um arquivo aceitando qualquer um dos campos de metadados como parâmetro.

A DHT utilizada neste trabalho é provida pelo \textit{framework} Past, um sistema de 
armazenamento distribuído, eficiente e escalável. O Past é implementado sobre o Pastry, 
que é um substrato de roteamento P2P \cite{site1}. Os nós Past formam uma rede 
\emph{overlay} descentralizada, auto-organizada, tolerante a falhas. Além disso, este 
\textit{framework} provê mecanismos de replicação de objetos, cache e recuperação de falhas. 

\section{A Arquitetura do Sistema}

O arquitetura do sistema consiste em uma rede de nós que podem inserir, buscar e recuperar 
arquivos através da DHT provida pelo \emph{Past}. Um catálogo centralizado mantém informações 
relacionadas a cada arquivo, como metadados e um identificador único, que servem para apoiar o 
sistema de busca de arquivos na rede.

Uma aplicação implementada em Java disponibiliza uma interface gráfica que permite o usuário 
navegar em seu sistema de arquivos, selecionando um arquivo para armazenar na DHT. A interface 
também permite a busca por um arquivo, com o preenchimento de alguns campos é obtida uma lista 
de resultados. A Figura\ref{tela} mostra a tela principal da aplicação implementada.

\begin{figure}[!htb]
     \centering
	      \includegraphics[scale=0.32]{interface.pdf}
		       \caption{Tela principal da aplicação implementada}
			   \label{tela}
			   \end{figure}

\subsection{Inserção}

Para inserir um arquivo na DHT, o usuário deve carrega-lo através da tela principal da 
aplicação e preencher os campos disponíveis com os metadados do arquivo. Arquivos inseridos na 
rede são quebrados em blocos menores de 256KB. A interface informará quantos blocos serão criados 
e qual o identificador único do arquivo. Quando o usuário decidir iniciar a inserção do arquivo 
na rede, o sistema fará a inserção dos metadados no catálogo, através de trocas diretas de mensagem. 
Em seguida os blocos serão inseridos na rede. Cada bloco é associado a um identificador único. Esse 
identificador não precisa ser armazenado, pois é calculado utilizando múltiplas funções hash. As 
múltiplas funções \textit{hash} são obtidas usando uma única função \textit{hash} e concatenando um sal ao valor de 
cada bloco. Portanto o \emph{i}-ésimo bloco recebe como identificador o resultado da fução hash sobre 
o identificador único do arquivo concatenado com o valor \emph{i}.

\subsection{Busca}

A interface também permite a busca por arquivos armazenados. O usuário deve preencher 
alguns dos campos de metadados conhecidos e submeter a busca. Através de troca de mensagens a consulta 
é enviada ao catálogo, que faz o processo e retorna uma lista de resultados. O usuário então pode decidir 
por recuperar o arquivo relacionado a algum dos resultados obtidos.

Como o catálogo não armazena nenhuma informação relacionada ao identificador de cada parte, é utilizada 
a técnica de múltiplas funções \textit{hash} descrita acima para recalcular os identificadores de cada nó, fazer 
a operação de \textit{lookup} do Past e remontar o arquivo.

\subsection{Catálogo}

O nó da rede responsável pelo catálogo mantém um arquivo no formato XML e fica disponível para troca de 
mensagens com outros nós. Esse nó deve atender toda à rede, tratando requisições de inserção e processando 
buscas sobre os dados mantidos.

O formato do arquivo XML pode ser visto na Figura\ref{catalogo}. Cada entrada do catálogo deve ter um valor 
diferente para o campo chave, que é o identificador único do arquivo. Relacionado a cada identificador único 
estão os metadados inseridos pelo usuário e informações extras do arquivo, como seu tamanho.

\begin{figure}[!htb]
	 \centering
     \includegraphics[scale=0.42]{catalogo.png}
     \caption{Arquivo XML que representa o catálogo da rede}
	 \label{catalogo}
\end{figure}

\section{Estrutura da Apresentação}

A apresentação deste trabalho será realizada no ``estilo'' demo de conferência. Serão executadas
diversas instâncias da aplicação, uma em cada servidora de processamento do Departamento de Informática
da UFPR. Serão mostradas as operações de inserçao e busca na DHT, bem como o estado do catálogo a
cada uma dessas operações.

\section{Conclusão}

Este trabalho apresentou uma solução peer-to-peer para o armazenamento distribuído de arquivos.
Os nós são inseridos na DHT utilizando as operações do PAST. Um catálogo centralizado processa buscas 
e permite a recuperação dos arquivos. A comunicação com o catálogo é feita através de trocas de 
mensagens diretas. A implementação apresenta bastante flexibilidade em seu uso, permitindo a 
utilização vários catálogos sobre a mesma rede, recuperação de apenas algumas partes do arquivo, em 
qualquer ordem. A utilização da técnica de mútiplas funções hash diminui consideravelmente a quantidade 
de informações armazenadas no catálogo para cada arquivo.

\bibliographystyle{abbrv}
\bibliography{sigproc}  % sigproc.bib is the name of the Bibliography in this case

\end{document}
